package com.wande.dataplatform.filecollection.domain.dto;

import lombok.Data;
import lombok.Builder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;

/**
 * 字段信息类
 * 描述文件中的字段元数据
 *
 * @author dataplatform
 * @date 2025-01-24
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class FieldInfo {

    /**
     * 字段名称
     */
    private String fieldName;

    /**
     * 字段类型（STRING, INTEGER, LONG, DOUBLE, BOOLEAN, DATE, TIMESTAMP）
     */
    private String fieldType;

    /**
     * 字段索引（在文件中的位置，从0开始）
     */
    private Integer fieldIndex;

    /**
     * 字段长度
     */
    private Integer fieldLength;

    /**
     * 字段精度（用于数值类型）
     */
    private Integer fieldPrecision;

    /**
     * 字段小数位数（用于数值类型）
     */
    private Integer fieldScale;

    /**
     * 是否可为空
     */
    @Builder.Default
    private Boolean nullable = true;

    /**
     * 字段注释/描述
     */
    private String comment;

    /**
     * 示例值
     */
    private String sampleValue;

    /**
     * 字段格式（如日期格式）
     */
    private String format;
}
